package com.example.huixingzheng.activity;

import android.os.Bundle;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import com.example.huixingzheng.R;
import com.example.huixingzheng.fragment.DeviceFragment;
import com.example.huixingzheng.fragment.PersonFragment;
import com.example.huixingzheng.fragment.WeatherFragment;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ViewPager2 viewPager;
    private List<Fragment> fragmentList;
    private ImageView[] dots; // 底部指示点

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();
        initView();
    }

    /**
     * 初始化三个页面对应的 Fragment 数据
     */
    private void initData() {
        fragmentList = new ArrayList<>();
        fragmentList.add(new WeatherFragment()); // 第0页：天气信息页
        fragmentList.add(new DeviceFragment());  // 第1页：设备信息页（统计数据页）
        fragmentList.add(new PersonFragment());  // 第2页：个人信息页
    }

    /**
     * 初始化 ViewPager2 与底部指示点
     */
    private void initView() {
        viewPager = findViewById(R.id.viewPager);
        // 设置 FragmentStateAdapter 适配器
        viewPager.setAdapter(new MyFragmentStateAdapter(this, fragmentList));

        // 假设 activity_main.xml 中有三个 ImageView 作为指示点，id 分别为 dot1、dot2、dot3
        dots = new ImageView[3];
        dots[0] = findViewById(R.id.dot1);
        dots[1] = findViewById(R.id.dot2);
        dots[2] = findViewById(R.id.dot3);

        // 初始化指示点状态，默认选中第一个
        updateDots(0);

        // 监听 ViewPager2 页面切换，更新指示点状态
        viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                updateDots(position);
            }
        });
    }

    /**
     * 更新底部指示点状态
     * @param selectedIndex 当前选中的页面索引
     */
    private void updateDots(int selectedIndex) {
        for (int i = 0; i < dots.length; i++) {
            if (i == selectedIndex) {
                dots[i].setImageResource(android.R.drawable.presence_online);
            } else {
                dots[i].setImageResource(android.R.drawable.presence_invisible);
            }
        }
    }

    /**
     * 内部类：FragmentStateAdapter 用于管理 ViewPager2 中的 Fragment 页面
     */
    private static class MyFragmentStateAdapter extends FragmentStateAdapter {

        private List<Fragment> fragmentList;

        public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragmentList) {
            super(fragmentActivity);
            this.fragmentList = fragmentList;
        }

        @NonNull
        @Override
        public Fragment createFragment(int position) {
            return fragmentList.get(position);
        }

        @Override
        public int getItemCount() {
            return fragmentList.size();
        }
    }
}
